Logika "ATAU" dan "DAN"
Dua pilar mendukung seluruh bidang kombinatorika. Aplikasinya sangat bergantung pada apakah kita melihat suatu tugas sebagai satu pilihan dari berbagai kategori atau sebagai rangkaian pilihan berturut-turut.
Jika suatu himpunan $X$ dibagi menjadi subset-subset yang saling lepas $X_1, X_2, \dots, X_n$, maka jumlah total elemen $|X|$ adalah jumlah ukuran dari subset-subset tersebut:
$$|X| = |X_1| + |X_2| + \dots + |X_n|$$
Analogi: Memilih makanan di Kay’s Quick Lunch dengan memilih salah satu antara sandwich dari menu Makanan Utama ATAU camilan dari menu Camilan. Anda tidak bisa memilih keduanya; Anda hanya memilih satu item.
Jika suatu aktivitas terdiri dari $t$ langkah berturut-turut, di mana langkah ke-$i$ memiliki $n_i$ kemungkinan hasil, maka jumlah total cara untuk menyelesaikan tugas tersebut adalah hasil kali dari kemungkinan pada setiap langkah:
$$N = n_1 \times n_2 \times \dots \times n_t$$
Analogi: Mengkonfigurasi truk "Big Pickup". Anda harus memilih mesin (5 pilihan) DAN gaya kabin (3 pilihan). Total konfigurasi sama dengan $5 \times 3 = 15$.
Implementasi Kode dan Kompleksitas
Dalam ilmu komputer, prinsip-prinsip ini muncul dalam struktur loop. Loop yang berurutan merepresentasikan Prinsip Penjumlahan, sedangkan loop bersarang merepresentasikan Prinsip Perkalian.
untuk i = 1 sampai m: println(i)
untuk j = 1 sampai n: println(j)
// Prinsip Perkalian (m * n eksekusi)
untuk i = 1 sampai m:
untuk j = 1 sampai n:
println(i, j)